<template>
	<view class="home-container">
		<!-- 搜索框 -->
		<view class="search-container">
			<view class="search-bar">
				<text class="search-icon">🔍</text>
				<input type="text" placeholder="请输入关键词搜索" placeholder-class="search-placeholder" class="search-input" />
			</view>
		</view>
		
		<!-- 轮播图 -->
		<view class="banner-container">
			<swiper class="banner-swiper" autoplay interval="3000" circular indicator-dots>
				<swiper-item v-for="(item, index) in bannerList" :key="index">
					<image :src="item.imageUrl" mode="aspectFill" class="banner-image"></image>
				</swiper-item>
			</swiper>
		</view>
		
		<!-- 分类切换列表 -->
		<view class="category-container">
			<scroll-view scroll-x enable-flex class="category-scroll">
				<view 
					v-for="(category, index) in categories" 
					:key="index"
					class="category-item"
					:class="{ 'active': currentCategory === index }"
					@click="switchCategory(index)"
				>
					<text class="category-text">{{ category.name }}</text>
				</view>
			</scroll-view>
		</view>
		
		<!-- 内容区域 -->
		<view class="content-area">
			<!-- 文章列表 -->
		<view class="article-list">
			<view class="article-item" v-for="(article, index) in articleList" :key="index" @click="navigateToArticle(article.id)">
				<view class="article-header">
					<view class="author-info">
						<image class="avatar" :src="article.avatar" mode="aspectFill"></image>
						<view class="author-meta">
							<text class="author-name">{{ article.author }}</text>
							<text class="publish-time">{{ article.time }}</text>
						</view>
					</view>
				</view>
				<view class="article-content">
					<text class="article-title">{{ article.title }}</text>
					<text class="article-desc">{{ article.description }}</text>
					<image v-if="article.imageUrl" :src="article.imageUrl" mode="aspectFill" class="article-image"></image>
				</view>
				<view class="article-footer">
					<view class="action-item">
						<text class="action-icon">👍</text>
						<text class="action-text">{{ article.likes }}</text>
					</view>
					<view class="action-item">
						<text class="action-icon">💬</text>
						<text class="action-text">{{ article.comments }}</text>
					</view>
					<view class="action-item">
						<text class="action-icon">📤</text>
						<text class="action-text">分享</text>
					</view>
				</view>
			</view>
		</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: '首页',
				bannerList: [
					{ imageUrl: '/static/bg/【哲风壁纸】云层-原始森林-山脉.png' },
					{ imageUrl: '/static/bg/【哲风壁纸】小镇-山脉-山谷.png' }
				],
				categories: [
					{ name: '关注' },
					{ name: '推荐' },
					{ name: '发现' },
					{ name: '热门' }
				],
				currentCategory: 1, // 默认选中"推荐"
				// 各分类的文章数据
				articleData: {
					0: [ // 关注
						{ id: '101', title: '如何提高代码质量', author: '技术达人', avatar: '/static/logo.png', time: '10分钟前', description: '本文将介绍几种提高代码质量的方法，包括代码规范、单元测试和代码审查等方面。', imageUrl: '/static/bg/【哲风壁纸】云层-原始森林-山脉.png', likes: 128, comments: 36 },
						{ id: '102', title: '前端性能优化实践', author: '前端工程师', avatar: '/static/logo.png', time: '1小时前', description: '分享一些实用的前端性能优化技巧，让你的网页加载更快，用户体验更好。', imageUrl: '/static/bg/【哲风壁纸】小镇-山脉-山谷.png', likes: 89, comments: 23 }
					],
					1: [ // 推荐
						{ id: '103', title: 'Vue 3 新特性详解', author: 'Vue爱好者', avatar: '/static/logo.png', time: '2小时前', description: 'Vue 3带来了许多令人兴奋的新特性，本文将详细介绍Composition API、Teleport等重要更新。', imageUrl: '/static/bg/【哲风壁纸】云层-原始森林-山脉.png', likes: 342, comments: 56 },
						{ id: '104', title: 'React Hooks最佳实践', author: 'React开发者', avatar: '/static/logo.png', time: '4小时前', description: 'React Hooks改变了我们编写React组件的方式，本文总结了一些使用Hooks的最佳实践。', imageUrl: '/static/bg/【哲风壁纸】小镇-山脉-山谷.png', likes: 256, comments: 42 },
						{ id: '105', title: 'Flutter跨平台开发经验分享', author: '移动开发者', avatar: '/static/logo.png', time: '昨天', description: '使用Flutter开发跨平台应用的经验和技巧，包括性能优化和UI设计等方面。', imageUrl: '', likes: 198, comments: 38 }
					],
					2: [ // 发现
						{ id: '106', title: '有趣的CSS动画效果', author: 'UI设计师', avatar: '/static/logo.png', time: '2天前', description: '分享一些有趣的CSS动画效果和实现方法，让你的网页更加生动有趣。', imageUrl: '/static/bg/【哲风壁纸】小镇-山脉-山谷.png', likes: 167, comments: 29 },
						{ id: '107', title: 'Node.js微服务架构实践', author: '后端工程师', avatar: '/static/logo.png', time: '3天前', description: '如何使用Node.js构建可扩展的微服务架构，提高系统的可靠性和可维护性。', imageUrl: '/static/bg/【哲风壁纸】云层-原始森林-山脉.png', likes: 145, comments: 31 }
					],
					3: [ // 热门
						{ id: '108', title: '2023年前端技术趋势展望', author: '技术专家', avatar: '/static/logo.png', time: '4天前', description: '展望2023年前端技术的发展趋势，包括框架、工具和方法论等方面的变化。', imageUrl: '/static/bg/【哲风壁纸】云层-原始森林-山脉.png', likes: 567, comments: 98 },
						{ id: '109', title: 'TypeScript进阶技巧', author: 'TS爱好者', avatar: '/static/logo.png', time: '1周前', description: 'TypeScript进阶技巧分享，包括高级类型、泛型和类型体操等内容。', imageUrl: '/static/bg/【哲风壁纸】小镇-山脉-山谷.png', likes: 432, comments: 78 },
						{ id: '110', title: 'WebAssembly入门教程', author: '全栈工程师', avatar: '/static/logo.png', time: '1周前', description: 'WebAssembly入门教程，介绍如何使用C/C++编写高性能的Web应用。', imageUrl: '', likes: 321, comments: 56 }
					]
				}
			}
		},
		onLoad() {
			console.log('首页加载完成')
		},
		methods: {
			// 切换分类
			switchCategory(index) {
				this.currentCategory = index;
				console.log(`切换到分类：${this.categories[index].name}`);
			},
			// 导航到文章详情页
			navigateToArticle(id) {
				uni.navigateTo({
					url: '/pages/article/article?id=' + id
				});
			}
		},
		computed: {
			// 根据当前选中的分类返回对应的文章列表
			articleList() {
				return this.articleData[this.currentCategory] || []
			}
		}
	}
</script>

<style scoped>
	/* 首页容器 */
	.home-container {
		background-color: #f5f5f5;
		min-height: 100vh;
		/* 确保在所有平台都能正确显示 */
		box-sizing: border-box;
	}
	
	/* 搜索框容器 */
	.search-container {
		padding: 20rpx;
		background-color: #ffffff;
		/* 适配不同平台的安全区域 */
		padding-top: calc(20rpx + env(safe-area-inset-top, 0));
	}
	
	/* 搜索框 */
	.search-bar {
		display: flex;
		align-items: center;
		background-color: #f0f0f0;
		border-radius: 30rpx;
		padding: 12rpx 20rpx;
	}
	
	/* 搜索图标 */
	.search-icon {
		font-size: 28rpx;
		margin-right: 10rpx;
		color: #999999;
	}
	
	/* 搜索输入框 */
	.search-input {
		flex: 1;
		font-size: 28rpx;
		color: #333333;
		background: none;
		border: none;
		outline: none;
	}
	
	/* 搜索框占位符 */
	.search-placeholder {
		color: #999999;
	}
	
	/* 轮播图容器 */
	.banner-container {
		width: 100%;
		margin-bottom: 20rpx;
		padding: 0 20rpx;
	}
	
	/* 轮播图 */
	.banner-swiper {
		height: 300rpx;
		overflow: hidden;
		border-radius: 16rpx;
		box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.08);
	}
	
	/* 轮播图图片 */
	.banner-image {
		width: 100%;
		height: 100%;
		border-radius: 16rpx;
		transition: transform 0.3s ease;
	}
	
	.swiper-item:active .banner-image {
		transform: scale(1.05);
	}
	
	/* 分类容器 */
	.category-container {
		background-color: #ffffff;
		padding: 20rpx 0;
		margin-bottom: 20rpx;
		border-radius: 16rpx;
		box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
	}
	
	/* 分类滚动容器 */
	.category-scroll {
		white-space: nowrap;
		padding: 0 20rpx;
	}
	
	/* 分类项 */
	.category-item {
		display: inline-block;
		padding: 10rpx 30rpx;
		margin-right: 10rpx;
		position: relative;
		transition: transform 0.2s ease;
		border-radius: 40rpx;
	}
	
	.category-item:active {
		background-color: #f0f9ff;
		transform: translateY(-2rpx);
	}
	
	/* 分类文本 */
	.category-text {
		font-size: 32rpx;
		color: #666666;
		transition: color 0.2s ease;
	}
	
	/* 选中状态的分类项 */
	.category-item.active .category-text {
		color: #1989fa;
		font-weight: bold;
	}
	
	/* 选中状态的下划线 */
	.category-item.active::after {
		content: '';
		position: absolute;
		bottom: 0;
		left: 30rpx;
		right: 30rpx;
		height: 4rpx;
		background-color: #1989fa;
		border-radius: 2rpx;
		transition: all 0.3s ease;
	}
	
	/* 内容区域 */
	.content-area {
		padding: 20rpx;
		/* 增加底部空间，确保在H5端也能正常显示 */
		padding-bottom: 150rpx;
		/* 确保内容不会被底部栏遮挡 */
		box-sizing: border-box;
	}
	
	/* 文章列表 */
	.article-list {
		background-color: #ffffff;
		border-radius: 16rpx;
		overflow: hidden;
		margin-bottom: 20rpx;
		box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
	}
	
	/* 文章项 */
	.article-item {
		padding: 30rpx 20rpx;
		border-bottom: 1rpx solid #f0f0f0;
		transition: background-color 0.2s ease;
	}
	
	.article-item:last-child {
		border-bottom: none;
	}
	
	.article-item:active {
		background-color: #f8f8f8;
	}
	
	/* 文章头部 */
	.article-header {
		margin-bottom: 20rpx;
	}
	
	/* 作者信息 */
	.author-info {
		display: flex;
		align-items: center;
	}
	
	/* 头像 */
	.avatar {
		width: 60rpx;
		height: 60rpx;
		border-radius: 50%;
		margin-right: 16rpx;
		border: 1rpx solid #f0f0f0;
	}
	
	/* 作者元信息 */
	.author-meta {
		flex: 1;
	}
	
	/* 作者名称 */
	.author-name {
		font-size: 28rpx;
		color: #333333;
		font-weight: 500;
		margin-bottom: 4rpx;
	}
	
	/* 发布时间 */
	.publish-time {
		font-size: 24rpx;
		color: #999999;
	}
	
	/* 文章内容 */
	.article-content {
		margin-bottom: 20rpx;
	}
	
	/* 文章标题 */
	.article-title {
		font-size: 34rpx;
		color: #333333;
		font-weight: bold;
		line-height: 1.5;
		margin-bottom: 16rpx;
		display: -webkit-box;
		-webkit-line-clamp: 2;
		-webkit-box-orient: vertical;
		overflow: hidden;
		transition: color 0.2s ease;
	}
	
	.article-item:active .article-title {
		color: #1989fa;
	}
	
	/* 文章描述 */
	.article-desc {
		font-size: 28rpx;
		color: #666666;
		line-height: 1.6;
		margin-bottom: 20rpx;
		display: -webkit-box;
		-webkit-line-clamp: 2;
		-webkit-box-orient: vertical;
		overflow: hidden;
	}
	
	/* 文章图片 */
	.article-image {
		width: 100%;
		height: 300rpx;
		border-radius: 12rpx;
		margin-bottom: 20rpx;
		transition: transform 0.2s ease;
	}
	
	.article-item:active .article-image {
		transform: scale(0.98);
	}
	
	/* 文章底部 */
	.article-footer {
		display: flex;
		justify-content: space-between;
		padding-top: 20rpx;
		border-top: 1rpx solid #f5f5f5;
	}
	
	/* 操作项 */
	.action-item {
		display: flex;
		align-items: center;
		flex: 1;
		justify-content: center;
		padding: 10rpx 0;
		transition: all 0.2s ease;
	}
	
	.action-item:active {
		background-color: #f0f0f0;
		border-radius: 20rpx;
	}
	
	/* 操作图标 */
	.action-icon {
		font-size: 30rpx;
		margin-right: 8rpx;
		color: #999999;
	}
	
	/* 操作文本 */
	.action-text {
		font-size: 26rpx;
		color: #999999;
	}
	
	/* H5端特殊样式 */
	@media screen and (min-width: 576px) {
		.home-container {
			max-width: 576px;
			margin: 0 auto;
			border-left: 1px solid #f0f0f0;
			border-right: 1px solid #f0f0f0;
		}
		
		.content-area {
			padding-bottom: 180rpx;
		}
	}
</style>
